package com.neusoft.NursingHome.controller;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.neusoft.NursingHome.po.BedUse;
import com.neusoft.NursingHome.po.ResponseBean;
import com.neusoft.NursingHome.service.BedUseService;

public class BedUseController {
	@Autowired
    private BedUseService bedUseService;

    /**
     * 更新床位使用记录的结束时间
     * @param id 使用记录 ID
     * @param endTime 结束时间
     * @return 返回更新结果的 ResponseBean
     */
    @PutMapping("/record/endTime")
    public ResponseBean<Boolean> updateBedUsageRecordEndTime(
            @RequestParam Integer id,
            @RequestParam Date endTime) {
        boolean result = bedUseService.updateBedUsageRecordEndTime(id, endTime);
        return new ResponseBean<>(result);
    }

    /**
     * 更新床位使用记录状态（逻辑删除）
     * @param id 使用记录 ID
     * @param status 新状态（0:历史 1:当前）
     * @return 返回更新结果的 ResponseBean
     */
    @PutMapping("/record/status")
    public ResponseBean<Boolean> updateBedUsageRecordStatus(
            @RequestParam Integer id,
            @RequestParam Byte status) {
        boolean result = bedUseService.updateBedUsageRecordStatus(id, status);
        return new ResponseBean<>(result);
    }

    /**
     * 按照状态 status 筛选床位使用记录
     * @param status 状态值（0:历史 1:当前）
     * @return 返回包含符合条件的床位使用记录列表的 ResponseBean
     */
    @GetMapping("/status/{status}")
    public ResponseBean<List<BedUse>> getBedUsageRecordsByStatus(@PathVariable Byte status) {
        List<BedUse> records = bedUseService.getBedUsageRecordsByStatus(status);
        return new ResponseBean<>(records);
    }

    /**
     * 按照客户名称和状态搜索记录
     * @param customerName 客户名称
     * @param status 状态值（0:历史 1:当前）
     * @return 返回包含符合条件的床位使用记录列表的 ResponseBean
     */
    @GetMapping("/searchByNameAndStatus")
    public ResponseBean<List<BedUse>> getBedUsageRecordsByCustomerNameAndStatus(
            @RequestParam String customerName,
            @RequestParam Byte status) {
        List<BedUse> records = bedUseService.getBedUsageRecordsByCustomerNameAndStatus(customerName, status);
        return new ResponseBean<>(records);
    }

    /**
     * 按照入住日期搜索记录
     * @param beginTime 入住日期
     * @return 返回包含符合条件的床位使用记录列表的 ResponseBean
     */
    @GetMapping("/searchByBeginTime")
    public ResponseBean<List<BedUse>> getBedUsageRecordsByBeginTime(@RequestParam Date beginTime) {
        List<BedUse> records = bedUseService.getBedUsageRecordsByBeginTime(beginTime);
        return new ResponseBean<>(records);
    }

    /**
     * 根据记录id获取一条数据
     * @param id 使用记录ID
     * @return 返回包含床位使用记录详情的 ResponseBean
     */
    @GetMapping("/{id}")
    public ResponseBean<BedUse> getBedUsageRecordById(@PathVariable Integer id) {
        BedUse record = bedUseService.getBedUsageRecordById(id);
        return new ResponseBean<>(record);
    }
//    添加床位使用记录
}
